package com.ehe.common.core.web.dao;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.ehe.common.core.mybatis.pagination.MyPageImpl;
import com.ehe.common.core.web.pojo.domain.SuperEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SuperMapper<T extends SuperEntity> extends BaseMapper<T> {

    /**
     * 批量新增数据,自选字段 insert
     * {@link com.baomidou.mybatisplus.extension.injector.methods.additional.InsertBatchSomeColumn}
     * @param entityList 实体集合
     * @return 插入条数
     */
    int insertBatchSomeColumn(List<T> entityList);

    /**
     * 全字段更新
     * {@link com.baomidou.mybatisplus.extension.injector.methods.additional.AlwaysUpdateSomeColumnById}
     * @param entity 实体
     * @return 更新条数
     */
    int alwaysUpdateSomeColumnById(@Param(Constants.ENTITY) T entity);

    /**
     * 分页查询
     * @param page 分页参数
     * @param queryWrapper 查询条件
     * @return 分页结果
     */
    MyPageImpl<T> selectMyPage(MyPageImpl<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

}
